作者:N01小贱_652 | 来源:互联网 | 2023-10-13 06:16
题目Givenanarrayofstrings,returnallgroupsofstringsthatareanagrams.Note:Allinputswillbeinl
题目
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
思路
这个题目是判断所给的字符串数组中是否存在重复的颠倒字符串.
解决思路如下
首先为每个字符串排序 -->这个是用来判断是否存在重复的颠倒字符串
然后在为字符串数组排序 -->这个是用来使整个字符串数组都有序
这样下来就容易判断了
我用了一个 AnagramsNode 来保存当前字符串所在的位置,方便最后的输出
好了,题目解决
代码
class AnagramsNode implements Comparable
{
int index;
String value;
@Override
public int compareTo(AnagramsNode o)
{
return value.compareTo(o.value);
}
}
public class Solution {
public ArrayList anagrams(String[] strs) {
ArrayList result = new ArrayList();
ArrayList node = new ArrayList();
for(int i =0; i {
char[] temp = strs[i].toCharArray();
Arrays.sort(temp);
AnagramsNode anagramsNode = new AnagramsNode();
anagramsNode.index = i;
anagramsNode.value = String.copyValueOf(temp);
node.add(anagramsNode);
}
Collections.sort(node);
for(int i = 0 ;i {
AnagramsNode anagramsNode = node.get(i);
int j = i+1;
boolean flag = false;
for(;j {
if(node.get(j).value.equals(anagramsNode.value))
{
result.add(strs[node.get(j).index]);
flag = true;
}
else
{
j--;
break;
}
}
if(flag == true)
{
i = j;
result.add(strs[anagramsNode.index]);
}
}
return result;
}
}
LeetCode|Anagrams,布布扣,bubuko.com